package com.qf.service.impl;

import com.qf.pojo.Order;
import com.qf.service.OrderService;
import org.apache.dubbo.config.annotation.Service;

import java.util.ArrayList;
import java.util.List;

//@Service

/*
 * 当dubbo服务提供者启动时，扫描到这个注解
 *  ① 会将这个对象注入到当前项目的spring容器中
 *  ② 将这个对象的信息都注册到注册中心（zookeeper），同时会基于我们配置的协议和端口号，在服务提供者进程内部再起一个服务端
 *      我们配置的协议是dubbo，这个服务端使用的是netty服务，这个netty服务的目的是等待消费方远程调用
 */
//@Service(version = "2.0")  //一定要导入dubbo的service注解（这个注解会触发服务注册程序）
public class OrderServiceImpl2 implements OrderService {
    @Override
    public List<Order> findByUid(Integer uid) {

        //模拟远程服务超时
//        try {
//            Thread.sleep(5000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }

//        System.out.println("超时后，下面的代码继续执行了~~~");

        //幂等性：多次执行的结果一致，称之为幂等，多次执行的结果不一致，称之为非幂等
        //查询：幂等
        //新增：非幂等
        //删除：幂等
        /*
            修改：
                update xx set money=money-500 where id = 1;  -- 非幂等
                update xx set money=500 where id = 1;  -- 幂等
         */
        System.out.println("2.0");
        List<Order> orders = new ArrayList<>();
        orders.add(new Order(1,1000.0,"订单1",uid));
        orders.add(new Order(2,2000.0,"订单2",uid));
        orders.add(new Order(3,2000.0,"订单3",uid));
        return orders;
    }
}
